package com.woniu.commons.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import org.springframework.stereotype.Component;

import javax.crypto.SecretKey;
import java.util.Date;
import java.util.Map;

@Component
public class JwtUtil {

    static String sec="qwertyuiopasdfghjklzxcvbnm!@#$%^&*()";
    static SecretKey key = Keys.hmacShaKeyFor(sec.getBytes());
    /**
     *
     * @param claims  存入载荷中的数据
     * @param minute  过期时间
     * @return
     */
    public  String createToken(Map<String, Object> claims, Integer minute){
        return Jwts.builder()
                .setClaims(claims)//向载荷中存入数据
                .setExpiration(new Date(System.currentTimeMillis() + (minute * 60 * 1000)))//设置超时时间
                .signWith(key)//设置私钥
                .compact();
    }
    /**
     * 解析令牌，解析失败会抛出各种异常，是运行时异常，需要自己去捕获并处理。
     * @param token
     * @return
     */
    public Claims parseToken(String token){
        return Jwts.parserBuilder()
                .setSigningKey(key)
                .build()
                .parseClaimsJws(token)
                .getBody();
    }

}

